/*
 * @Author: heinan
 * @Date: 2023-07-21 10:40:26
 * @Last Modified by: heinan
 * @Last Modified time: 2023-08-01 21:59:35
 */
"use strict";
const { routeCreator } = require("../app/utils");

module.exports = (appInfo) => {
  const config = (exports = {});
  config.keys = appInfo.name + "_1636591141914_4788";
  config.static = {
    prefix: "/public",
  };
  // config.middleware = ["responseTime", "checkLogin", "checkIdentity", "gzip"];
  config.middleware = ["responseTime", "checkLogin", "gzip"];
  config.multipart = {
    mode: "file",
  };
  config.security = {
    csrf: {
      enable: false,
    },
  };
  config.mysql = {
    client: {
      host: "localhost",
      port: "3306",
      user: "root",
      password: "123456",
      database: "house",
    },
    app: true,
    agent: false,
  };
  config.mediaServer = {
    rtmp: {
      port: 23480,
      chunk_size: 60000,
      gop_cache: true,
      ping: 30,
      ping_timeout: 60,
    },
    http: {
      port: 23481,
      allow_origin: "*",
    },
  };
  // 超级白名单，登录和身份都不需要验证
  config.whiteList = [
    routeCreator("/swagger-doc", "GET"),
    routeCreator("/swagger-ui.html", "GET"),
    routeCreator("/swagger-ui.css", "GET"),
    routeCreator("/swagger-ui-bundle.js", "GET"),
    routeCreator("/swagger-ui-standalone-preset.js", "GET"),
    routeCreator("/favicon-32x32.png", "GET"),
    routeCreator("/favicon-16x16.png", "GET"),
    routeCreator("/user/login", "POST"),
    routeCreator("/user/registry", "POST"),
    routeCreator("/user/captcha", "GET"),
    routeCreator(/^\/user\/getAuthInfo\/*/, "any"), //获取权限信息
    routeCreator(/^\/user\/delAutho\/*/, "any"), // 删除权限信息
    routeCreator("/user/cancelIdentityApi", "POST"), //取消身份的api接口权限
    routeCreator("/user/cancelIdentityView", "POST"), //取消身份的视图接口权限
  ];
  // 身份白名单，不需要验证身份
  config.identityWhiteList = [
    routeCreator("/getViewAuthByIdentityId", "GET"),
    routeCreator(/^\/api\/v1\/broker\/*/, "any"),
  ];
  // 登录白名单，不需要验证登录
  config.loginWhiteList = [routeCreator("/swagger-ui.html", "GET")];
  config.swaggerdoc = {
    // 配置自动扫描的控制器路径。
    dirScanner: "./app/controller",
    // 接口文档的标题，描述或其它。
    apiInfo: {
      // 接口文档的标题。
      title: "EGG-HOUSE-SERVER",
      // 接口文档描述。
      description: "SWAGGER-UI FOR EGG-HOUSE-SERVER",
      // 接口文档版本。
      version: "0.0.1",
    },
    schemes: ["http"], // 配置支持的协议。
    consumes: ["application/json"], // 指定处理请求的提交内容类型（Content-Type），例如application/json, text/html。
    produces: ["application/json"], // 指定返回的内容类型，仅当request请求头中的(Accept)类型中包含该指定类型才返回。
    securityDefinitions: {
      // 配置接口安全授权方式。
      // apikey: {
      //   type: 'apiKey',
      //   name: 'clientkey',
      //   in: 'header',
      // },
      // oauth2: {
      //   type: 'oauth2',
      //   tokenUrl: 'http://petstore.swagger.io/oauth/dialog',
      //   flow: 'password',
      //   scopes: {
      //     'write:access_token': 'write access_token',
      //     'read:access_token': 'read access_token',
      //   },
      // },
    },
    enableSecurity: false, // 是否启用授权，默认 false（不启用）。
    enableValidate: false, // 是否启用参数校验，默认 true（启用）。
    routerMap: true, // 是否启用自动生成路由，默认 true (启用)。
    enable: true, // 默认 true (启用)。
  };
  return config;
};
